package com.huibur.devicecheck.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.huibur.devicecheck.model.po.TaskRecordPO;
import com.huibur.devicecheck.model.query.TaskRecordQuery;
import com.huibur.devicecheck.model.vo.StatisticVO;
import com.huibur.devicecheck.model.vo.TaskRecordVO;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.sql.Timestamp;
import java.util.List;

/*******************************************************
* Title: TaskRecordMapper.java
* Description:
* @author baiqingshuo
* @date 2021/9/24
* @version 1.0
*******************************************************/
@Repository
@Mapper
public interface TaskRecordMapper extends BaseMapper<TaskRecordPO> {

    /**
     * 检修记录列表(查询并分页)
     * @param page
     * @param taskRecordQuery
     * @return
     */
    IPage<TaskRecordVO>  selectListTaskRecord(@Param("page") Page<TaskRecordPO> page,@Param("taskRecordQuery") TaskRecordQuery taskRecordQuery);

    /**
     * 根据用户id获取检修记录
     * @param id
     * @return
     */
    List<TaskRecordVO> findTaskRecordByUserId(@Param("id") Long id);

    /**
     * 根据设备唯一标识获取检修记录
     * @param deviceLabel
     * @return
     */
    List<TaskRecordVO> findTaskRecordByDeviceLabel(@Param("deviceLabel") String deviceLabel);

    /**
     * 根据任务id获取检修记录
     * @param id
     * @return
     */
    List<TaskRecordVO> findTaskRecordByTaskId(@Param("id")Long id);

    /**
     * 移动端检修记录列表(查询并分页)
     * @param page
     * @param taskRecordQuery
     * @return
     */
    IPage<TaskRecordVO> selectTaskRecordList(@Param("page") Page<TaskRecordPO> page,@Param("taskRecordQuery") TaskRecordQuery taskRecordQuery);

    /**
     * 获取检修记录详情
     * @param id
     * @return
     */
    TaskRecordVO selectByListTaskRecord(@Param("id")Long id);

    /**
     * 查询统计图中正常状态的数量（当月）
     * @param firstTimestamp
     * @param lastTimestamp
     * @return
     */
//    List<String> selectMonthNormalList(Timestamp firstTimestamp, Timestamp lastTimestamp);

    /**
     * 查询统计图中异常状态的数量（当月）
     * @param firstTimestamp
     * @param lastTimestamp
     * @return
     */
//    List<String> selectMonthAbnormalList(Timestamp firstTimestamp, Timestamp lastTimestamp);

    /**
     * 统计图中直接将两组数据查出来
     * @param firstTimestamp
     * @param lastTimestamp
     * @return
     */
    List<StatisticVO> selectStatusNum(Timestamp firstTimestamp, Timestamp lastTimestamp);

    /**
     * 查询当月的所有记录
     * @param firstTimestamp
     * @param lastTimestamp
     * @return
     */
    List<TaskRecordVO> selectMonthList(Timestamp firstTimestamp, Timestamp lastTimestamp);

    /**
     * 根据用户ID获取当前月份中的检查记录的设备唯一标识
     * @param userId
     * @param firstTimestamp
     * @param lastTimestamp
     * @return
     */
    List<String> selectLabelByUserId(@Param("userId") Long userId,@Param("firstTimestamp") Timestamp firstTimestamp,@Param("lastTimestamp") Timestamp lastTimestamp);
}
